<script>
  import config from './config'
  import { getToken } from '@/utils/auth'
  import { getPublicProgramConfig } from '@/api/programConfig'

  export default {
    globalData: {
      config: null,
      programConfig: null // 小程序配置（不再作为缓存使用）
    },
    onLaunch: function() {
      this.initApp()
    },
    onShow: function(options) {
      // 处理微信确认收货组件回调
      if (options && options.referrerInfo && options.referrerInfo.appId === 'wx1183b055aeec94d1') {
        const extraData = options.referrerInfo.extraData
        if (extraData && extraData.status === 'success') {
          // 确认收货成功，触发全局事件
          uni.$emit('confirmOrderSuccess', extraData)
        }
      }
    },
    methods: {
      // 初始化应用
      initApp() {
        // 初始化应用配置
        this.initConfig()
        // 初始加载小程序配置
        this.loadProgramConfig()
        // 检查用户登录状态
        //#ifdef H5
        this.checkLogin()
        //#endif
      },
      initConfig() {
        this.globalData.config = config
      },
      checkLogin() {
        if (!getToken()) {
          this.$tab.reLaunch('/pages/login') 
        }
      },
      // 初始加载小程序配置（仅在应用启动时调用一次）
      loadProgramConfig() {
        console.log('🚀 开始初始加载小程序配置...')
        this.fetchProgramConfig().then(config => {
          this.globalData.programConfig = config
        })
      },
      // 实时获取小程序配置（每次调用都重新请求接口）
      async fetchProgramConfig() {
        try {
          console.log('🔄 实时获取小程序配置...')
          const response = await getPublicProgramConfig()
          console.log('✅ 小程序配置获取成功:', response)
          
          if (response && response.data) {
            console.log('📋 小程序配置数据:', JSON.stringify(response.data, null, 2))
            return response.data
          } else {
            throw new Error('配置数据格式错误')
          }
        } catch (error) {
          console.error('❌ 小程序配置获取失败:', error)
          // 返回默认配置
          const defaultConfig = {
            showBanner: 1,
            showNotice: 1,
            showPopup: 1,
            showNavButtons: 1,
            showNewProducts: 1,
            showHotProducts: 1,
            showRecommendProducts: 1,
            themeColor: '0',
            secondaryColor: '#FF6B35',
            backgroundColor: '#F5F5F5'
          }
          console.log('🔧 使用默认配置:', JSON.stringify(defaultConfig, null, 2))
          return defaultConfig
        }
      },
      // 获取当前程序配置（实时获取，不使用缓存）
      async getProgramConfig() {
        return await this.fetchProgramConfig()
      }
    }
  }
</script>

<style lang="scss">
  @import '@/static/scss/index.scss'
</style>
